未命名
某电影公司发行了
如果要求某人对电影留下评论,那么:
- 如果这个人喜欢这部电影,他就会留下正面评论,这部电影的评分就会增加
; - 如果此人不喜欢这部电影,则会留下负面评论,电影评分将降低
; - 否则,他们会留下中性评论,电影评分不会改变。
每个人都会评论一部电影,您可以为每个人选择评论哪部电影。
公司的评分是两部电影评分的最小值。您的任务是计算公司可能获得的最高评分。
思路:只有两个都是 1 或-1 的时候才会单独考虑,枚举即可。
void solve() {
int n;cin >> n;
vector<int> a(n), b(n);
for (auto& i : a)cin >> i;
for (auto& i : b)cin >> i;
int cnt1 = 0, cnt2 = 0;
int pos = 0, neg = 0;
for (int i = 0;i < n;i++) {
if (a[i] == b[i]) {
if (a[i] == 1) {
pos++;
}
if (a[i] == -1) {
neg++;
}
continue;
}
if (a[i] > b[i]) {
cnt1 += a[i];
} else {
cnt2 += b[i];
}
}
int ans = -1e9;
for (int i = -neg;i <= pos;i++) {
int x = cnt1 + i;
int y = pos - neg - i + cnt2;
ans = max(ans, min(x, y));
}
cout << ans << '\n';
}